package com.ks.api.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ks.api.entity.KsEventData;
import com.ks.api.entity.KsUserCostSummary;

import java.util.List;
import java.util.Map;

/**
 * 用户成本汇总数据服务接口
 */
public interface KsUserCostSummaryService extends IService<KsUserCostSummary> {
    
    /**
     * 保存用户成本汇总数据
     * 
     * @param costSummary 成本汇总数据
     * @return 保存结果
     */
    boolean saveCostSummary(KsUserCostSummary costSummary);
    
    /**
     * 分页查询用户成本汇总数据
     * 
     * @param page 页码
     * @param size 每页大小
     * @param nickId 用户ID
     * @param nickName 用户昵称
     * @return 分页结果
     */
    Map<String, Object> findCostSummaries(Integer page, Integer size, String nickId, String nickName);
    
    /**
     * 计算并保存用户成本汇总数据
     * @param eventDataList 事件数据列表
     * @return 保存的记录数
     */
    int calculateAndSaveCostSummaries(List<KsEventData> eventDataList);

    /**
     * 查询用户成本汇总数据（包含用户信息）
     * @param page 页码
     * @param size 每页大小
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param nickName 用户昵称
     * @param nickId 用户ID
     * @return 分页数据
     */
    Map<String, Object> findCostSummariesWithUserInfo(Integer page, Integer size, String startTime, String endTime, String nickName, String nickId);

    /**
     * 搜索事件数据
     * @param page 页码
     * @param size 每页大小
     * @param nickId 用户ID
     * @param nickname 用户昵称
     * @return 分页结果
     */
    Map<String, Object> searchEvents(Integer page, Integer size, String nickId, String nickname);

    /**
     * 获取事件搜索统计数据
     * @param nickId 用户ID
     * @param nickname 用户昵称
     * @return 统计数据
     */
    Map<String, Object> getEventSearchStats(String nickId, String nickname);
} 